library(ggplot2)
library(ggsci)
library(hdf5r)
library(patchwork)
library(RColorBrewer)
library(Seurat)
library(tidyverse)
setwd("/Users/christinacomo/Desktop/Spatial")
getwd()
[1] "/Users/christinacomo/Desktop/Spatial"
data_dir <- '/Users/christinacomo/Desktop/Spatial/data/D'
list.files(data_dir) # Should show filtered_feature_bc_matrix.h5
[1] "cellshiglighted_D.png" "clusters and spatial_D.png" "Dorsal Cortex_ControlD.csv"
[4] "Dorsal Meninges_MutantD.csv" "filtered_feature_bc_matrix.h5" "nCount_D.png"
[7] "spatial" "spatial_D.png" "web_summary.html"
SampleD <- Load10X_Spatial(
data_dir,
filename = "filtered_feature_bc_matrix.h5",
assay = "Spatial",
slice = "slice1",
filter.matrix = TRUE,
to.upper = FALSE,
image = NULL,
)
sample <- "mutant2"
SampleD[["orig.ident"]] <- sample
SampleD <- SetIdent(SampleD, value = so@meta.data$orig.ident)


SampleD <- SCTransform(SampleD, assay = "Spatial")
Calculating cell attributes from input UMI matrix: log_umi
Variance stabilizing transformation of count matrix of size 16605 by 1523
Model formula is y ~ log_umi
Get Negative Binomial regression parameters per gene
Using 2000 genes, 1523 cells
|
| | 0%
|
|=========================== | 25%
|
|====================================================== | 50%
|
|================================================================================ | 75%
|
|===========================================================================================================| 100%
There are 2 estimated thetas smaller than 1e-07 - will be set to 1e-07
Found 109 outliers - those will be ignored in fitting/regularization step
Second step: Get residuals using fitted parameters for 16605 genes
|
| | 0%
|
|=== | 3%
|
|====== | 6%
|
|========= | 9%
|
|============= | 12%
|
|================ | 15%
|
|=================== | 18%
|
|====================== | 21%
|
|========================= | 24%
|
|============================ | 26%
|
|=============================== | 29%
|
|=================================== | 32%
|
|====================================== | 35%
|
|========================================= | 38%
|
|============================================ | 41%
|
|=============================================== | 44%
|
|================================================== | 47%
|
|====================================================== | 50%
|
|========================================================= | 53%
|
|============================================================ | 56%
|
|=============================================================== | 59%
|
|================================================================== | 62%
|
|===================================================================== | 65%
|
|======================================================================== | 68%
|
|============================================================================ | 71%
|
|=============================================================================== | 74%
|
|================================================================================== | 76%
|
|===================================================================================== | 79%
|
|======================================================================================== | 82%
|
|=========================================================================================== | 85%
|
|============================================================================================== | 88%
|
|================================================================================================== | 91%
|
|===================================================================================================== | 94%
|
|======================================================================================================== | 97%
|
|===========================================================================================================| 100%
Computing corrected count matrix for 16605 genes
|
| | 0%
|
|=== | 3%
|
|====== | 6%
|
|========= | 9%
|
|============= | 12%
|
|================ | 15%
|
|=================== | 18%
|
|====================== | 21%
|
|========================= | 24%
|
|============================ | 26%
|
|=============================== | 29%
|
|=================================== | 32%
|
|====================================== | 35%
|
|========================================= | 38%
|
|============================================ | 41%
|
|=============================================== | 44%
|
|================================================== | 47%
|
|====================================================== | 50%
|
|========================================================= | 53%
|
|============================================================ | 56%
|
|=============================================================== | 59%
|
|================================================================== | 62%
|
|===================================================================== | 65%
|
|======================================================================== | 68%
|
|============================================================================ | 71%
|
|=============================================================================== | 74%
|
|================================================================================== | 76%
|
|===================================================================================== | 79%
|
|======================================================================================== | 82%
|
|=========================================================================================== | 85%
|
|============================================================================================== | 88%
|
|================================================================================================== | 91%
|
|===================================================================================================== | 94%
|
|======================================================================================================== | 97%
|
|===========================================================================================================| 100%
Calculating gene attributes
Wall clock passed: Time difference of 17.37419 secs
Determine variable features
Place corrected count matrix in counts slot
Centering data matrix
|
| | 0%
|
|=========================== | 25%
|
|====================================================== | 50%
|
|================================================================================ | 75%
|
|===========================================================================================================| 100%
Set default assay to SCT
SampleD <- RunPCA(SampleD, assay = "SCT", verbose = FALSE)
SampleD <- FindNeighbors(SampleD, reduction = "pca", dims = 1:30, verbose = FALSE)
SampleD <- FindClusters(SampleD, verbose = FALSE)
SampleD <- RunUMAP(SampleD, reduction = "pca", dims = 1:30)
14:15:17 UMAP embedding parameters a = 0.9922 b = 1.112
14:15:17 Read 1523 rows and found 30 numeric columns
14:15:17 Using Annoy for neighbor search, n_neighbors = 30
14:15:17 Building Annoy index with metric = cosine, n_trees = 50
0% 10 20 30 40 50 60 70 80 90 100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
14:15:17 Writing NN index file to temp file /var/folders/2b/gcm1xy2n6s50jqf9f3ln87140000gn/T//RtmpWq9Udx/file58a4300adebd
14:15:17 Searching Annoy index using 1 thread, search_k = 3000
14:15:18 Annoy recall = 100%
14:15:18 Commencing smooth kNN distance calibration using 1 thread
14:15:20 Initializing from normalized Laplacian + noise
14:15:20 Commencing optimization for 500 epochs, with 53102 positive edges
0% 10 20 30 40 50 60 70 80 90 100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
14:15:22 Optimization finished
p1 <- DimPlot(SampleD, reduction = "umap", label = TRUE)
p2 <- SpatialDimPlot(SampleD, label = TRUE, label.size = 3)
Scale for 'fill' is already present. Adding another scale for 'fill', which will replace the existing scale.
p1 + p2

saveRDS(SampleD, "/Users/christinacomo/Desktop/Spatial/RDS_files/SampleD_initial.RDS")
#Now subset with spots
rawdata_dir <- ('/Users/christinacomo/Desktop/Spatial/Raw Data')
MGE <- read.csv("/Users/christinacomo/Desktop/Spatial/Raw Data/Mutant2MGE.csv")
LGE <- read.csv("/Users/christinacomo/Desktop/Spatial/Raw Data/Mutant2LGE.csv")
Midline <- read.csv("/Users/christinacomo/Desktop/Spatial/Raw Data/Mutant2Midline.csv")
Dorsal_Cortex <- read.csv("/Users/christinacomo/Desktop/Spatial/Raw Data/Mutant2DorsalCortex.csv")
Ventral_Cortex <- read.csv("/Users/christinacomo/Desktop/Spatial/Raw Data/Mutant2VentralCortex.csv")
# rename columns in cortex and meninges dataframes for merging
names(MGE) <- c("barcodes", "region")
names(LGE) <- c("barcodes", "region")
names(Midline) <- c("barcodes", "region")
names(Dorsal_Cortex) <- c("barcodes", "region")
names(Ventral_Cortex) <- c("barcodes", "region")
# merge cortex and meninges dataframes together
regions_of_interest <- rbind(MGE, LGE, Midline, Dorsal_Cortex, Ventral_Cortex)
# grab the spot barcodes to use for subsetting
spots.use <- regions_of_interest$barcodes
regions_of_interest <- regions_of_interest %>% column_to_rownames(var = "barcodes")
# check dimensions of regions_of_interest and make sure it is the sum of cc_cortex and cc_meninges
dim(regions_of_interest)
[1] 214 1
# now, subset the seurat object
SampleD <- subset(SampleD, cells = spots.use)
subset_D <- AddMetaData(SampleD, metadata = regions_of_interest)
p1 <- SpatialDimPlot(subset_D)
p1

SpatialFeaturePlot(subset_D,
features = c("nCount_Spatial",
"nFeature_Spatial",
"percent_mito",
"percent_hb"))

saveRDS(subset_D, "/Users/christinacomo/Desktop/Spatial/RDS_files/SampleD_subsetwithbarcodes.RDS")
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCmVkaXRvcl9vcHRpb25zOiAKICBjaHVua19vdXRwdXRfdHlwZTogaW5saW5lCi0tLQoKCmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZ2dzY2kpCmxpYnJhcnkoaGRmNXIpCmxpYnJhcnkocGF0Y2h3b3JrKQpsaWJyYXJ5KFJDb2xvckJyZXdlcikKbGlicmFyeShTZXVyYXQpCmxpYnJhcnkodGlkeXZlcnNlKQpgYGAKCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLCBlcnJvciA9IEZBTFNFKSAKYGBgCgoKYGBge3J9CnNldHdkKCIvVXNlcnMvY2hyaXN0aW5hY29tby9EZXNrdG9wL1NwYXRpYWwiKQpnZXR3ZCgpCmBgYAoKYGBge3J9CmRhdGFfZGlyIDwtICcvVXNlcnMvY2hyaXN0aW5hY29tby9EZXNrdG9wL1NwYXRpYWwvZGF0YS9EJwpsaXN0LmZpbGVzKGRhdGFfZGlyKSAjIFNob3VsZCBzaG93IGZpbHRlcmVkX2ZlYXR1cmVfYmNfbWF0cml4Lmg1CmBgYAoKCmBgYHtyfQpTYW1wbGVEIDwtIExvYWQxMFhfU3BhdGlhbCgKICBkYXRhX2RpciwKICBmaWxlbmFtZSA9ICJmaWx0ZXJlZF9mZWF0dXJlX2JjX21hdHJpeC5oNSIsCiAgYXNzYXkgPSAiU3BhdGlhbCIsCiAgc2xpY2UgPSAic2xpY2UxIiwKICBmaWx0ZXIubWF0cml4ID0gVFJVRSwKICB0by51cHBlciA9IEZBTFNFLAogIGltYWdlID0gTlVMTCwKKQpgYGAKCmBgYHtyfQpzYW1wbGUgPC0gIm11dGFudDIiClNhbXBsZURbWyJvcmlnLmlkZW50Il1dIDwtIHNhbXBsZQpTYW1wbGVEIDwtIFNldElkZW50KFNhbXBsZUQsIHZhbHVlID0gc29AbWV0YS5kYXRhJG9yaWcuaWRlbnQpCmBgYAoKCgpgYGB7cn0KU2FtcGxlRCA8LSBQZXJjZW50YWdlRmVhdHVyZVNldChTYW1wbGVELCAiXm10LSIsIGNvbC5uYW1lID0gInBlcmNlbnRfbWl0byIpClNhbXBsZUQgPC0gUGVyY2VudGFnZUZlYXR1cmVTZXQoU2FtcGxlRCwgIl5IYi4qLSIsIGNvbC5uYW1lID0gInBlcmNlbnRfaGIiKQpgYGAKCmBgYHtyLCBmaWcuaGVpZ2h0ID0gMywgZmlnLndpZHRoID0gM30KVmxuUGxvdChTYW1wbGVELCAKICAgICAgICBmZWF0dXJlcyA9IGMoIm5Db3VudF9TcGF0aWFsIiwgCiAgICAgICAgICAgICAgICAgICAgICJuRmVhdHVyZV9TcGF0aWFsIiwgCiAgICAgICAgICAgICAgICAgICAgICJwZXJjZW50X21pdG8iLCAKICAgICAgICAgICAgICAgICAgICAgInBlcmNlbnRfaGIiKSwKICAgICAgICBwdC5zaXplID0gMC4xLCAKICAgICAgICBuY29sID0gMikgKyBOb0xlZ2VuZCgpCmBgYAoKYGBge3J9ClNwYXRpYWxGZWF0dXJlUGxvdChTYW1wbGVELCAKICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzID0gYygibkNvdW50X1NwYXRpYWwiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibkZlYXR1cmVfU3BhdGlhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJjZW50X21pdG8iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyY2VudF9oYiIpKQpgYGAKCmBgYHtyfQpTYW1wbGVEIDwtIFNDVHJhbnNmb3JtKFNhbXBsZUQsIGFzc2F5ID0gIlNwYXRpYWwiKQoKYGBgCgpgYGB7cn0KU2FtcGxlRCA8LSBSdW5QQ0EoU2FtcGxlRCwgYXNzYXkgPSAiU0NUIiwgdmVyYm9zZSA9IEZBTFNFKQpTYW1wbGVEIDwtIEZpbmROZWlnaGJvcnMoU2FtcGxlRCwgcmVkdWN0aW9uID0gInBjYSIsIGRpbXMgPSAxOjMwLCB2ZXJib3NlID0gRkFMU0UpClNhbXBsZUQgPC0gRmluZENsdXN0ZXJzKFNhbXBsZUQsIHZlcmJvc2UgPSBGQUxTRSkKU2FtcGxlRCA8LSBSdW5VTUFQKFNhbXBsZUQsIHJlZHVjdGlvbiA9ICJwY2EiLCBkaW1zID0gMTozMCkKYGBgCgpgYGB7cn0KcDEgPC0gRGltUGxvdChTYW1wbGVELCByZWR1Y3Rpb24gPSAidW1hcCIsIGxhYmVsID0gVFJVRSkKcDIgPC0gU3BhdGlhbERpbVBsb3QoU2FtcGxlRCwgbGFiZWwgPSBUUlVFLCBsYWJlbC5zaXplID0gMykKcDEgKyBwMgpgYGAKCmBgYHtyfQpzYXZlUkRTKFNhbXBsZUQsICIvVXNlcnMvY2hyaXN0aW5hY29tby9EZXNrdG9wL1NwYXRpYWwvUkRTX2ZpbGVzL1NhbXBsZURfaW5pdGlhbC5SRFMiKQpgYGAKCgpgYGB7cn0KI05vdyBzdWJzZXQgd2l0aCAgc3BvdHMgCnJhd2RhdGFfZGlyIDwtICgnL1VzZXJzL2NocmlzdGluYWNvbW8vRGVza3RvcC9TcGF0aWFsL1JhdyBEYXRhJykKCk1HRSA8LSByZWFkLmNzdigiL1VzZXJzL2NocmlzdGluYWNvbW8vRGVza3RvcC9TcGF0aWFsL1JhdyBEYXRhL011dGFudDJNR0UuY3N2IikKTEdFIDwtIHJlYWQuY3N2KCIvVXNlcnMvY2hyaXN0aW5hY29tby9EZXNrdG9wL1NwYXRpYWwvUmF3IERhdGEvTXV0YW50MkxHRS5jc3YiKQpNaWRsaW5lIDwtIHJlYWQuY3N2KCIvVXNlcnMvY2hyaXN0aW5hY29tby9EZXNrdG9wL1NwYXRpYWwvUmF3IERhdGEvTXV0YW50Mk1pZGxpbmUuY3N2IikKRG9yc2FsX0NvcnRleCA8LSByZWFkLmNzdigiL1VzZXJzL2NocmlzdGluYWNvbW8vRGVza3RvcC9TcGF0aWFsL1JhdyBEYXRhL011dGFudDJEb3JzYWxDb3J0ZXguY3N2IikKVmVudHJhbF9Db3J0ZXggPC0gcmVhZC5jc3YoIi9Vc2Vycy9jaHJpc3RpbmFjb21vL0Rlc2t0b3AvU3BhdGlhbC9SYXcgRGF0YS9NdXRhbnQyVmVudHJhbENvcnRleC5jc3YiKQpgYGAKCmBgYHtyfQojIHJlbmFtZSBjb2x1bW5zIGluIGNvcnRleCBhbmQgbWVuaW5nZXMgZGF0YWZyYW1lcyBmb3IgbWVyZ2luZwpuYW1lcyhNR0UpIDwtIGMoImJhcmNvZGVzIiwgInJlZ2lvbiIpCm5hbWVzKExHRSkgPC0gYygiYmFyY29kZXMiLCAicmVnaW9uIikKbmFtZXMoTWlkbGluZSkgPC0gYygiYmFyY29kZXMiLCAicmVnaW9uIikKbmFtZXMoRG9yc2FsX0NvcnRleCkgPC0gYygiYmFyY29kZXMiLCAicmVnaW9uIikKbmFtZXMoVmVudHJhbF9Db3J0ZXgpIDwtIGMoImJhcmNvZGVzIiwgInJlZ2lvbiIpCmBgYAoKYGBge3J9CiMgbWVyZ2UgY29ydGV4IGFuZCBtZW5pbmdlcyBkYXRhZnJhbWVzIHRvZ2V0aGVyCnJlZ2lvbnNfb2ZfaW50ZXJlc3QgPC0gcmJpbmQoTUdFLCBMR0UsIE1pZGxpbmUsIERvcnNhbF9Db3J0ZXgsIFZlbnRyYWxfQ29ydGV4KSAKYGBgCgoKYGBge3J9CiMgZ3JhYiB0aGUgc3BvdCBiYXJjb2RlcyB0byB1c2UgZm9yIHN1YnNldHRpbmcKc3BvdHMudXNlIDwtIHJlZ2lvbnNfb2ZfaW50ZXJlc3QkYmFyY29kZXMKcmVnaW9uc19vZl9pbnRlcmVzdCA8LSByZWdpb25zX29mX2ludGVyZXN0ICU+JSBjb2x1bW5fdG9fcm93bmFtZXModmFyID0gImJhcmNvZGVzIikKYGBgCgpgYGB7cn0KIyBjaGVjayBkaW1lbnNpb25zIG9mIHJlZ2lvbnNfb2ZfaW50ZXJlc3QgYW5kIG1ha2Ugc3VyZSBpdCBpcyB0aGUgc3VtIG9mIGNjX2NvcnRleCBhbmQgY2NfbWVuaW5nZXMKZGltKHJlZ2lvbnNfb2ZfaW50ZXJlc3QpCmBgYAoKYGBge3J9CiMgbm93LCBzdWJzZXQgdGhlIHNldXJhdCBvYmplY3QKU2FtcGxlRCA8LSBzdWJzZXQoU2FtcGxlRCwgY2VsbHMgPSBzcG90cy51c2UpCmBgYAoKYGBge3J9CnN1YnNldF9EIDwtIEFkZE1ldGFEYXRhKFNhbXBsZUQsIG1ldGFkYXRhID0gcmVnaW9uc19vZl9pbnRlcmVzdCkKcDEgPC0gU3BhdGlhbERpbVBsb3Qoc3Vic2V0X0QpCnAxCmBgYAoKCmBgYHtyfQpTcGF0aWFsRmVhdHVyZVBsb3Qoc3Vic2V0X0QsIAogICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSBjKCJuQ291bnRfU3BhdGlhbCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuRmVhdHVyZV9TcGF0aWFsIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcmNlbnRfbWl0byIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJjZW50X2hiIikpCmBgYAoKYGBge3J9CnNhdmVSRFMoc3Vic2V0X0QsICIvVXNlcnMvY2hyaXN0aW5hY29tby9EZXNrdG9wL1NwYXRpYWwvUkRTX2ZpbGVzL1NhbXBsZURfc3Vic2V0d2l0aGJhcmNvZGVzLlJEUyIpCmBgYAoKCgo=